package com.cskaoyan.service;

import com.cskaoyan.dao.UserDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Service;

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.annotation.Resource;

/**
 * @author stone
 * @date 2022/08/02 16:08
 */
@Service
//@Scope("singleton")
public class UserServiceImpl implements UserService{

    /*//@Autowired // 按照类型从容器中取出组件，给该注解对应的成员变量赋值
    //@Qualifier("userDao") // 如果该类型的组件在容器中不止一个，使用@Qualifier指定组件id
    @Resource(name = "userDao")      //默认按照类型注入，如果该类型的组件不止一个，可以使用其name属性指定组件id
    UserDao userDao;*/

    /*@Autowired //在生命周期设置属性值的过程中执行该方法，
    // 该方法对应的形参，默认按照类型从容器中取出的；如果该类型的组件在容器中不止一个，可以使用@Qualifier指定组件id
    public void setUserDao(UserDao userDao) {
        this.userDao = userDao;
    }*/

    UserDao userDao;

    // 如果没有无参构造方法，Bean的实例化会采用有参构造方法
    // 形参：和@Bean对应的方法的形参、和set方法对应的形参是一样
    // 默认按照类型从容器中取出组件，如果该类型的组件在容器中不止一个，使用@Qualifier指定组件id
    public UserServiceImpl(UserDao userDao) {
        this.userDao = userDao;
    }

    @PostConstruct
    public void init() {

    }
    @PreDestroy
    public void destroy() {

    }
}
